Proving correctness of modular functional programs
نویسنده
چکیده
One reason for studying and programming in functional programming languages is that they are easy to reason about, yet there is surprisingly little work on proving the correctness of large functional programs. In this dissertation I show how to provide a system for proving the correctness of large programs written in a major functional programming language, ML [MTH90]. ML is split into two parts: the Core (in which the actual programs are written), and Modules (which are used to structure Core programs). The dissertation has three main themes. • Due to the detail and complexity of proofs of programs, a realistic system should use a computer proof assistant, and so I first discuss how such a system can be coded in a generic proof assistant (I use Paulson’s Isabelle [Pau94a]). • I give a formal proof system for proving properties of programs written in the functional part of Core ML. • The Modules language is one of ML’s strengths: it allows the programmer to write large programs by controlling the interactions between its parts. In the final part of the dissertation I give a method of proving correctness of ML Modules programs using the well-known data reification method [Jon86]. Proofs of reification using this method boil down to proofs in the system for the Core.
منابع مشابه
Kopitiam: Modular Incremental Interactive Full Functional Static Verification of Java Code
We are developing Kopitiam, a tool to interactively prove full functional correctness of Java programs using separation logic by interacting with the interactive theorem prover Coq. Kopitiam is an Eclipse plugin, enabling seamless integration into the workflow of a developer. Kopitiam enables a user to develop proofs side-by-side with Java programs in Eclipse.
متن کاملInteractive Verification of Call-by-Value Functional Programs
A mechanized proof of total correctness enables one to verify a program with utmost confidence. Yet, setting up a methodology for reasoning formally on nontrivial code written in a generalpurpose language has appeared to be a highly challenging task. In this paper, we propose a framework for modular verification of purely functional code. By embedding the syntax and semantics of a call-by-value...
متن کاملModular Design and Verification of Logical Knowledge Bases
In this paper we describe a framework for the design of modular knowledge based systems which is motivated by work in algebraic specification and software engineering. The main characteristic of the framework is that verification work can be done in a local setting. We present two concrete module concepts within this framework, and give formal semantics and correctness notions for them. Finally...
متن کاملAutomatic Verification for Fine-grained Concurrency
Recent program logics based on separation logic emphasise a modular approach to proving functional correctness for fine-grained concurrent programs. However, these logics have no automation support. In this paper, we present Caper, a prototype tool for automated reasoning in such a logic. Caper is based on symbolic execution, integrating reasoning about interference on shared data and about gho...
متن کاملA Practical Approach to Verification of Recursive Programs in Theorema extended abstract
We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. Proving total correctness is achieved by proving separately partial correctness and then termination. We develop a pattern for proving parti...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1999